import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * El objetivo de la clase es crear un ninja que no se mueva pero que lanze bombas en forma diagonal
 * 
 * @author Jose Luis Sandoval Quintero 
 * @version 5-Junio-2012
 */
public class Ninja extends Enemigo
{
    private int tipo = 0; //tipo de ninja. establece en qu eposicion de la pantalla aparecer
    private int xi; //x inicial del actor
    private int xf; //x final del actor
    private boolean band = false; 
    private boolean band2 = false;
    
    /**
     * Constructor de objetos de la clase Ninja
     * @param t 0 para que lance las bombas hacia abajo y
     * 1 para que lance las bombas hacia arriba
     */
    public Ninja( int t )
    {
        tipo = t;
    }
    public void act() 
    {
        super.act();
        this.calculaDistancia();
        this.muevete();
        if( super.nPegadas == 2 )
        {
            super.nPegadas = 3;
            super.turn( 90 );
            super.eliminado = true;
        }
        if( super.getX() >= xf || super.getX() == xi && band2 && ! super.eliminado )
            lanzaBomba();
        if( super.eliminado )
        {
            move( 6 );
            if( super.getY() == getWorld().getHeight() - 1 )
                super.getWorld().removeObject( this );  
        }
    } 
    /**
     * lanza una bomba cada que llega al final de su limite
     */
    public void lanzaBomba()
    {
        if( tipo == 0 )
            super.getWorld().addObject( new BombaH( 0 ), super.getX(), super.getY() );
        else
            super.getWorld().addObject( new BombaH( 1 ), super.getX(), super.getY() );
    }
    /**
     * calcula la distancia que se movera para despues volver a ala posicion inicial 
     */
    public void calculaDistancia()
    {
        if( ! band && ! super.eliminado)
        {
            xi = super.getX();
            xf = xi + 300; 
            band = true;
        }
    }
    /**
     * se mueve de acuerdo a la distancia calculada
     */
    public void muevete()
    {
        if( super.getX() < xf && ! band2 && ! super.eliminado )
        {
            if( tipo == 0 )
                super.setImage( "enem1.png" );
            else
                super.setImage( "enem1_3.png" );
            move( 5 );
        }
        else
            band2 = true;
        if( super.getX() > xi && band2 && ! eliminado )
        {
            if( tipo == 0 )
                super.setImage( "enem1_2.png" );
            else
                super.setImage( "enem1_4.png" );
            move( -5 );
        }
        else
            band2 = false;
    }
}
